Three-dimensional object representation

ABSTRACT

Methods and apparatus relating to three-dimensional object models are described. In one example, (i) data representing a geometrical description of a three-dimensional object defining object geometry in a geometric space and (ii) at least one object property description describing an object property in an object property space are received. The object property space and the geometric space are intersected to define an object model, wherein an object property is defined at an intersection between a described object property and defined object geometry.

CLAIM FOR PRIORITY

The present application is a national stage filing under 35 U.S.C. § 371of PCT application number PCT/US2015/027593, having an internationalfiling date of Apr. 24, 2015, the disclosure of which is herebyincorporated by reference in its entirety.

BACKGROUND

Three-dimensional objects generated by an additive manufacturing processmay be formed in a layer-by-layer manner. In one example of additivemanufacturing, an object is generated by solidifying portions of layersof build material. In examples, the build material may be in the form ofa powder, fluid or sheet material. The intended solidification and/orphysical properties may be achieved by printing an agent onto a layer ofthe build material. Energy may be applied to the layer and the buildmaterial on which an agent has been applied may coalesce and solidifyupon cooling. In other examples, chemical binding agents may be used tosolidify a build material. In other examples, three-dimensional objectsmay be generated by using extruded plastics or sprayed materials asbuild materials, which solidify to form an object.

Some printing processes that generate three-dimensional objects usecontrol data generated from a model of a three-dimensional object. Thiscontrol data may, for example, specify the locations at which to applyan agent to build material, or where a build material itself may beplaced, and the amounts to be placed.

The control data may be generated from a 3D representation of an objectto be printed.

BRIEF DESCRIPTION OF DRAWINGS

For a more complete understanding, reference is now made to thefollowing description taken in conjunction with the accompanyingdrawings in which:

FIG. 1 is a flowchart of an example of a method for defining an objectproperty model;

FIG. 2 is a schematic representation of an example of an object propertydescription;

FIG. 3 is a flowchart of an example of a method for defining an objectproperty model;

FIG. 4 is a schematic example representation of intersections of ageometric model and object property descriptions;

FIG. 5 is a flowchart of an example of a method associating an objectproperty description with an object model;

FIG. 6 is a simplified schematic of an example of processing apparatus;and

FIG. 7 is a simplified schematic of an example of processing apparatusfor generating control data for production of a three-dimensionalobject.

DETAILED DESCRIPTION

Some examples described herein provide an apparatus and a method forrepresenting a three-dimensional object and/or for generating controldata that may be used to produce a three-dimensional object. Someexamples allow arbitrary three-dimensional content with a variety ofspecified object properties to be processed and used to generate athree-dimensional object. These object properties may compriseappearance properties (color, transparency, glossiness, etc),conductivity, density, porosity and/or mechanical properties such asstrength.

In some examples, a print material coverage representation defines printmaterial data, for example detailing the amount of print materials (suchas agent(s) to be deposited onto a layer of build material, or in someexamples, build materials themselves), and, if applicable, theircombinations. In some examples, this may be specified as a proportionalvolume coverage (for example, X % of a region of a layer of buildmaterial should have agent Y applied thereto). Such print materials maybe related to or selected to provided an object property such as, forexample, color, transparency, flexibility, elasticity, rigidity, surfaceroughness, porosity, conductivity, inter-layer strength, density, andthe like.

The actual location at which each print material (for example, a drop ofan agent) should be applied, as specified in control data, may bedetermined using halftoning techniques.

For example, a set of locations or volumes within object model data mayhave an associated set of print material coverage vectors. In a simplecase, such a vector may indicate that X % of a given region ofthree-dimensional space should have a particular agent applied thereto,whereas (100-X) % should be left clear of agent. A print materialcoverage representation may then provide the input for a ‘halftoning’process to generate control data that may be used by an additivemanufacturing system to produce a three-dimensional object. For example,it may be determined that, to produce specified object properties, 25%of a layer of build material (or of a portion of a layer) should have anagent applied thereto. The halftoning process determines where the dropsof agent fall in order to provide 25% coverage, for example by comparingeach location to a threshold value provided in a halftone thresholdmatrix.

FIG. 1 is an example of a method for processing data comprising arepresentation of an object. In block 102, data representing ageometrical description of a three-dimensional object in a geometricspace, for example using geometric space coordinates, is received. Insome examples, this may comprise an array of ‘Voxels’, i.e.three-dimensional pixels, wherein each voxel occupies a discrete volume.Such voxels may be all of the same size, or may be different sizes.Other volumetric descriptions may be used. In other examples,three-dimensional space may be characterised as at least one point, forexample using a coordinate system such as an [x, y, z] three-dimensionalCartesian coordinate system, or a polar coordinate system. For example,object surfaces may be described in terms of tessellating flat surfaces,such as triangles, by defining the corners (which may be termed thevertices) of the surfaces. Defining the corners also effectivelyspecifies the edges and the (in this example) triangular faces. Thisallows an object's shape to be approximated, making economical use ofcomputer memory space. The data may for example be the output of aComputer Aided Design (CAD) program, or some other digitalrepresentation of a three dimension object.

In block 104, at least one object property description describing anobject property in an object property space, for example using objectproperty space coordinates, is received. An object property descriptionmay describe any property or properties which may be associated with anobject represented by the data, such as appearance properties (color,transparency, glossiness, etc), conductivity, density, porosity and/ormechanical properties such as strength. An object property descriptionmay be defined using the same coordinate system as that used for thegeometrical description. However, in other examples, an object propertydescription may be defined in a similar space (for example, having thesame number of dimensions) to the geometric space of the geometricdescription but with a different coordinate system, a different origin,or a different scale (for example, a proportional scale varying betweena maximum and minimum, rather than an absolute scale). In furtherexamples, the object property space may be different from that of thegeometric space, for example comprising more or fewer dimensions.

In block 106, the object property space and the geometric space areintersected to define an object model (block 108), in which an objectproperty is defined at the location of at least one intersection betweena described object property and defined object geometry.

When ascribing properties to an object, it may be case that eachlocation which is defined geometrically also has its properties defined.However, in the method of FIG. 1, the object properties are initiallyinstead defined in object property space, which may have the same ordifferent dimensions to the geometric shape, and may have the same ordifferent coordinates. Therefore, the object property description isde-coupled from the geometric description. This allows the same objectdescription to be used with a plurality of geometric descriptions, andcan also result in economical memory usage.

There may be an implicit or explicit mapping between locations in thegeometric space and locations in the object property space (howevercomplex/high-dimensional object space may be). In particular, eachlocation in a geometric space of an object may have a mapping with alocation in an object property space, which defines the objectproperties at that geometric location.

To consider a simple example, assume that the object to be described isa self-righting round bottomed doll figure. The shape to be describedmay be complex, having facial features, and a curved underside, andtherefore many vertices may be defined to fully represent the intendedshape. In this example, these are defined in XYZ space, each vertexhaving a set of coordinates [x,y,z]_(i). However, a density model of theobject is simple, having a first density below a level in the figure anda second, lower, density above it.

Although many vertices may be specified to describe the doll ingeometric space, the density at each of these vertices will be one oftwo values. Storing an density value for each geometric vertex istherefore inefficient. Instead, in this example, separately holding acuboid which fully encloses the doll, or indeed a single axis, which hasa low density specified for an upper region and a high density specifiedfor a lower region, may make more economical use of memory. If controldata is to be generated to allow generation of an object, the data canbe combined at that time (for example aligning the change in densitydefined along an axis with height in the doll). However, until thatpoint, an economically sized object model may be held.

In this particular example, using the same coordinate space as in thegeometrical model may be a reasonable option but this may not be thecase. If for example the density of an object was to reduce withdistance from a particular point, polar coordinates may be moreappropriate. In other examples, a gradient or other value function of aproperty may be specified independently of an object and then scaled toa particular object size. In another example may be more economical todefine a surface differently than in a model object, for example using adifferent set of polygons (e.g. using a quadrilateral, rather than atriangular, mesh), or to use a different scale or have a differentorigin, or to specify an object property space having a domain thatexceeds that of the geometrical object. In some examples, an objectproperty may have a functional definition. For example, rather than aproperty defined explicitly at a specific location L in any arbitrarycoordinate system, it may be defined as a function f(L), without any onelocation being specified.

In some examples, an object property description comprises at least oneobject property value data object. An example of an object property dataobject 200 as shown schematically in FIG. 2. In this example, the set ofproperties comprises three color values V_(R), V_(G), V_(B),representing Red, Green and Blue color values, a Density value V_(D), astiffness value V_(S), a conductivity value V_(C) and an opacity valueV_(O). Other sets of object properties may be described, and maycomprise any of the properties mentioned above as well as any of,amongst others: a flexibility; elasticity; rigidity; surface roughness;porosity; strength, or the like.

In some examples, a value set is predetermined for each property and thevalue is taken from the set. For example, a bit depth may be specifiedfor each property. For the set of values shown in FIG. 2, the bit depthmay for example be specified as [8, 8, 8, 5, 4, 1, 6], i.e. the colorvalues are specified with 8 bit resolution, 5 bits (32 level resolution)for the density values, 4 bits (16 level resolution) for stiffnessvalues, 1 bit (on/off) for conductivity, and 6 bits (64 levelresolution) for opacity. This would result in a 5-byte encoding of theseven property data object.

However, in other examples, the object property description could takeany form, including an instruction for a particular combination ofmaterials/agents to be used in fabricating an object having thedescribed property or properties. In examples in which a locationrepresents a region of the object, the object property description maycomprise an indication of at least one object property which varieswithin the region. For example, instead of being an indication of asingle property, it could comprise an indication of a property gradientor other function.

In some examples, a plurality of separate object property descriptionscould be provided, each representing one or a subset of the objectproperties for an object.

In a particular example, an object property description comprises anindexed array of unique object property value data objects and a set oflocations associated with an index of the indexed array. This may removeredundancy as each unique data object is described once rather thanmultiple times and referred to, possibly for a plurality oflocations/regions, with an associated index.

A conversion, translation and or transformation of an object propertyspace to a geometric space may also be carried out.

FIG. 3 comprises a method of processing data comprising, in receiving afirst (block 300) and a second (block 302) object property descriptions,

The first object property description comprises object property valuedata objects associated with each of a plurality of locations within afirst object property space. The first object property in one example isdefined in three-dimensional space using polar coordinates. The secondobject property description comprises an indication of discretelocations in a second dimensional space, in one example indicating aproperty that varies in one dimension (for example, along the length ofan object).

In block 304, distinct object property value data objects within thefirst object property description are found. An indexed array ispopulated with the distinct object property value data objects, suchthat data indicative of each distinct object property value data objectsis stored at a different index within the array (block 306). In block308, a new object property description is generated, the new objectproperty description comprising an index associated with each of theplurality of locations within the object property space, wherein theindex corresponds to the index of the object property value data objectfor that location.

In block 310, data representing a geometrical description of an objectis received. The geometry of an object is defined in three-dimensionalspace using Cartesian coordinates with indications of distances given ina standard manner (in one example, millimetres). In this example, thedata comprises a plurality of geometric vertices, each indicative of apoint in geometric space.

In block 312, the coordinates of the first object property descriptionare transformed into those of the geometric description (in one example,from polar to Cartesian).

In block 314, the second object property description is converted fromthe second object property space into the three-dimensional geometricspace used to provide the geometric description. This conversion maycomprises any, or any combination of a transformation, a translation, arescaling, an alignment, or the like. In an example in which a propertyvaries in one dimension, this may comprise generating a descriptionwhich is consistent in two dimensions, but varies in the third, andwhich is sized to match the geometric description—for example if thesecond object property comprises a linearly varying value fortransparency, such that an object is intended to vary from opaque at itsbase to transparent at its top, the one dimensional description could beused to generate a three-dimensional model where any XY slice takenparallel to a Z axis would represent the same transparency. In otherexamples, an origin, or arbitrary points in the different spaces, may bealigned.

In block 316, the object property spaces and the geometric space, nowhaving the same dimensionality and coordinate systems, are intersected.An object model is generated (block 318), the object model comprisingthe plurality of geometric vertices and at least one non-geometricvertex defining at least one object property at an intersection. Wherean object property is defined as a function (for example, a function oflocation L, f(L)), then interpolation (for example piece-wise linearinterpolation) may be used to derive points of intersection. In someexamples, the density of the interpolated points may depend on thenon-linearity of f(L).

Intersection of two object property spaces and a geometric space isillustrated schematically in FIG. 4. In FIG. 4, a geometric model is acube 400 (shown in cross section). The cube is defined by values at itsvertices, and by vectors linking the vertices to define the edges (asrepresented by lines 402 a, b, c, d), and therefore to define the faces.An object opacity description 404 is also provided, in this example, theobject opacity description space is also a cube—shown in cross sectionas a square—which has a base parallel to the geometric model cube 400,but is relatively rotated thereto about a central axis. The objectopacity description 404 has values explicitly specified at its eightvertices, and intermediate values are derivable by interpolation. Theobject opacity description 404 specifies that the object is made up offour different opacity levels which are offset from its faces. An objectcolour description 406 is also provided, in this case another relativelyrotated cube, specifying four colors such each face comprises a firstand second color.

In some examples, an object property description may be a fully orpartially defined vector model. In other examples, the properties may bedefined at at least one point, for example with an explicit or implicittessellation. An implicit tessellation may for example be a Delaunaytessellation, or another predetermined tessellation. In some examples,interpolation of specified object properties may be used to fillgeometric model space, or to generate object property values at a pointof intersection. If a location within geometric model space is outsidethe scope of properties, extrapolation (for example replication) may beused to define an object property value at that point, or a defaultvalue may be used or the property may be undefined.

In this example, the models are aligned by performing an origin toorigin transformation, which has the effect of providing a shared originor, in this example, aligning the centre point. In other examples, thecentre point may not be aligned. For example, the models may be in someother way to establish coordinate correspondence (for example byspecifying that coordinates [a₁, b₂, c₃] in one geometry are matched tocoordinates [x_(i), y_(j), z_(k)] in another, carrying out appropriatescaling or the like).

Where the geometric model coincides with an object property description,and, in this example, where the two object property descriptionscoincide, any object property values are noted. In this example, opacityvalues are defined at various points 408 and color values are noted atpoints 410. The actual values at these points may differ. At a centralpoint, which is not explicitly defined in the geometric model 400, bothvalues are defined.

In this example, object values are stored as non geometric vertices. Forexample, non geometric vertices at points 408, 410 may be characterisedby a data object having the form [RGBO], such that the non geometricvertices at points 408 may be expressed as [-,-,-,V_(O)], whereas thenon geometric vertices at points 410 may be expressed as [V_(R), V_(G),V_(B), -], and the central data object may be expressed as [V_(R),V_(G), V_(B), V_(O)]. In some examples, some or all of the points couldbe described as plurality of object description vectors, wherein thevectors are based on the object properties indicated at the points ofintersection, either with the geometric model or with each other. Thismeans that the shape-geometry defining [x, y, z] coordinates maycontribute to the definition of shape, and also act as object propertyholding vertices.

In other examples, a variety of samplings may be made across portion ofeach property space which coincides with the geometric space occupied bythe model. This may result in a plurality of partially populated objectproperty data object defined as vectors. For example at a location whereopacity is specified RGBDFCO_(i)=[-, -, -, -, -, V_(O)], while elsewherewhere color is specified RGBDFCO_(i)=[V_(R), V_(G), V_(B), -, -, -, -].Where every property is fully defined at every location, a fullypopulated object property data object may be defined for each location,e.g. RGBDFCO_(i)=[V_(R), V_(G), V_(B), V_(D), V_(F), V_(C), V_(O)]. Thecombination of properties defined for different objects, and hence thestructure of the data object, may vary.

In some examples, there may be trade-off between an increase inspatial-geometry (shape) vertices (adding non-geometric vertices to ageometric description that describe non-spatial features, insteadholding object property information) and defining vectors. These may beused in combination or individually, for example depending on the mosteconomical data representation.

A method of associating an object property description with a geometricdescription of a three-dimensional object is shown in FIG. 5. In thisexample, in block 502, an initial object property description comprisinga plurality of object property value data objects, each associated withone of a plurality of locations within object property space isreceived. In some examples, this may comprise a model object in whicheach specified volume and/or location is associated with a description(i.e., the geometric object space may be the same as the object propertyspace). In other examples, the object property description may besupplied in isolation from any geometric description of an object.

In block 504, distinct object property value data objects areidentified. This may be carried out on the object properties as a set(i.e. finding distinct object property value combinations), or for eachspecified property (for example, finding distinct color values, distinctopacity values, etc.).

In block 506, an indexed array is populated with the distinct objectproperty value data objects, such that data indicative of each distinctobject property value data object is stored at a different index withinthe array. In block 508, a new object property description is generated,in which the data comprises an index associated with each of theplurality of locations within the object property space and the indexcorresponds to the index of the object property value data object forthat location. In block 510, the generated object property descriptionis intersected with a geometric description of a three-dimensionalobject.

Not all possible properties, and not all possible combinations ofproperties, are likely to be seen in any given object property spaceused to describe a possible gamut of values which that property mayhave. If all possible property combinations were to be stored, thememory space taken up would be very large. Taking the bit depth examplesset out above, for color description in an RGB domain at 8-bits thetotal possible address space is 256³. Adding two additional 8-bitencoded properties, such as e.g. structure and opacity would result inan address space of 256⁵ (i.e. ˜10¹²). However, for a given objectproperty description, this space is likely to be sparsely populated byvalues to be represented in a particular object. In addition, a firstobject property may have a large range of values and a second objectproperty may have a small range (or be entirely homogenous)

Therefore, by populating a data object (which may be database, held in amemory of the like), with distinct object property value data objectsfor a particular object property description (i.e. not includingrepeated items as separate entries), each stored at a different memoryaddress, the address space taken up is sized for the propertydescription under consideration, which takes up less memory space thanthe entire set of possible object property descriptions.

As explained above, in some examples, the geometric description is adescription of the geometry of a three-dimensional object in a geometricspace, and the locations within an object property space be converted tolocations a geometric space, for example by conversion of a coordinatesystem, or by scaling, or the like.

FIG. 6 shows an example of processing apparatus 600 that may be used togenerate control data for production of a three-dimensional object. Theapparatus 600 in this example comprises an interface 602, a conversionmodule 604, model generator 606, and a memory 608.

In the example of FIG. 6, the data representing a three-dimensionalmodel object 610 comprises a geometric description 612 and objectproperty data 614. The geometric description 612 may define athree-dimensional model of at least a portion of the model object 610.The geometric description 612 may define the shape and extent of all orpart of an object in a three-dimensional co-ordinate system, e.g. thesolid portions of the object. The geometric description 612 may forexample be generated by a computer aided design (CAD) application.Object property data 614 defines at least one object property for thethree-dimensional object to be generated. In one case, the objectproperty data 614 may define any, or any combination of: color,flexibility, elasticity, rigidity, surface roughness, porosity,inter-layer strength, density, conductivity and the like for at least aportion of the object to be generated. In one example, it may comprise aplurality of data objects as described in relation to FIG. 2. The objectproperty data 614 may also be used to define one or multiple objectproperties for a portion or portions of an object.

The interface 602 receives the data 612, 614 representing thethree-dimensional model object 610. In some examples, the interface 602may receive the geometric description 612 and the object property data614 as a single file; in other examples the interface 602 may receiveportions of the geometric description 612 and/or the object propertydata 614 as multiple data objects, wherein the geometric description 612and the object property data 614 are distributed across a number ofassociated data structures. In one example, the geometric description612 may comprise voxels that are defined in a three-dimensional (alsoreferred to herein as [x,y,z]) space. A given voxel may have associateddata that indicates whether a portion of the model object 610 is presentat that location. The voxels may be of the same or different shapesand/or sizes. The object property data 614 may comprise global and localobject property data, e.g. certain object property values as defined inthe object property data 614 may be associated with each voxel thatdefines the object and/or certain object property values may beassociated with a set of voxels, e.g. ranging from individual voxels toall voxels associated with the object.

The conversion module 604 expresses the object property data ingeometric space if the object property space is specified differently tothe geometric space of the geometric description 612, which thereforeprovides a canonical coordinate system. This may comprise converting theobject property data into the geometric data, for example by mapping itto a new coordinate system, scaling the data, expanding the data,aligning an origin or other points in the spaces, or the like.

The model generator 606 combines the geometric description 612 and theobject property data 614 by intersecting the geometric description andthe object property data 614 and assigning object properties to thegeometric description 612 to generate a model 616 comprising associatedobject property descriptions. Where the geometric description 612comprises an array of voxels, the model generator may assign an objectproperty to a voxel.

The resulting model 616 is stored in the memory 608.

FIG. 7 shows additional processing apparatus 700, which could beincluded in the processing apparatus of FIG. 6 in some examples, or maybe separate therefrom. The processing apparatus 700 comprises a mappingmodule 702 to map the data indicative of the object propertydescriptions to print material coverage representations and a controldata module 704 to generate control data from the print materialcoverage representation.

In this example, the mapping module 702 receives the data object held inthe memory 608 (although a different data source may be provided) andmaps each object property value or value set therein to at least oneprint material coverage representation, in this example, at least onematerial volume coverage (Mvoc) vector. In some examples, where anindexed array of unique values has been created, mapping may be carriedout based on the indexed array, or may have been pre-computed, andavailable for use as a look-up table to provide the print materialcoverage representation for each object property value or value set.

An Mvoc vector may have a plurality of values, wherein each valuedefines a proportion for each, or each combination of print materials inan addressable location of a layer of the three-dimensional object. Forexample, in an additive manufacturing system with two available printmaterials (for example, agents)—M1 and M2, where each print material maybe independently deposited in an addressable area of a layer of thethree-dimensional object, there may be 2² (i.e. four) proportions in agiven Mvoc vector: a first proportion for M1 without M2; a secondproportion for M2 without M1; a third proportion for an over-deposit(i.e. a combination) of M1 and M2, e.g. M2 deposited over M1 or viceversa; and a fourth proportion for an absence of both M1 and M2. In thiscase an Mvoc vector may be: [M1, M2, M1M2, Z] or with example values[0.2, 0.2, 0.5, 0.1]—i.e. in a given [x, y] location in a z slice, 20%M1 without M2, 20% M2 without M1, 50% M1 and M2 and 10% empty. As eachvalue is a proportion and the set of values represent the availablematerial combinations, the set of values in each vector sum to 1 or100%.

For example, in a case where the agents are colored, then the Mvocvector may be determined to generate select agent combinations thatgenerate a match with a supplied object property, e.g. a supplied RGBvalue. In some examples the mapping between an Mvoc vector and thesupplied object properties may be held in a lookup table, or may bespecified on an individual basis.

The control data module 704 operates on the print material coveragerepresentation using halftone data, in one example having at least onestored halftone threshold matrix having the same dimensions as specifiedfor the object 610. Specifically, in this example, the print materialcoverage representation is compared with the threshold values of thethreshold matrix representing the same three-dimensional location togenerate control data 706 for printing a three-dimensional object basedon the model object. The control data 706 may for example be in the formof a set of discrete print material choices for a pixel in a plane,wherein the discrete values across the area of the plane may berepresentative of proportions set out in the print material coveragerepresentation.

Examples in the present disclosure can be provided as methods, systemsor machine readable instructions, such as any combination of software,hardware, firmware or the like. Such machine readable instructions maybe included on a computer readable storage medium (including but notlimited to disc storage, CD-ROM, optical storage, etc.) having computerreadable program codes therein or thereon.

The present disclosure is described with reference to flow charts and/orblock diagrams of the method, devices and systems according to examplesof the present disclosure. Although the flow diagrams described aboveshow a specific order of execution, the order of execution may differfrom that which is depicted. Blocks described in relation to one flowchart may be combined with those of another flow chart. It shall beunderstood that each flow and/or block in the flow charts and/or blockdiagrams, as well as combinations of the flows and/or diagrams in theflow charts and/or block diagrams can be realized by machine readableinstructions.

The machine readable instructions may, for example, be executed by ageneral purpose computer, a special purpose computer, an embeddedprocessor or processors of other programmable data processing devices torealize the functions described in the description and diagrams. Inparticular, a processor or processing apparatus, such the processingapparatus 600, 700 may execute the machine readable instructions. Thusfunctional modules of the apparatus and devices may be implemented by aprocessor executing machine readable instructions stored in a memory, ora processor operating in accordance with instructions embedded in logiccircuitry. The term ‘processor’ is to be interpreted broadly to includea CPU, processing unit, ASIC, logic unit, or programmable gate arrayetc. The methods and functional modules may all be performed by a singleprocessor or divided amongst several processors.

Such machine readable instructions may also be stored in a computerreadable storage that can guide the computer or other programmable dataprocessing devices to operate in a specific mode.

Such machine readable instructions may also be loaded onto a computer orother programmable data processing devices, so that the computer orother programmable data processing devices perform a series ofoperations to produce computer-implemented processing, thus theinstructions executed on the computer or other programmable devicesprovide a means for realizing functions specified by flow(s) in the flowcharts and/or block(s) in the block diagrams.

Further, the teachings herein may be implemented in the form of acomputer software product, the computer software product being stored ina storage medium and comprising a plurality of instructions for making acomputer device implement the methods recited in the examples of thepresent disclosure.

While the method, apparatus and related aspects have been described withreference to certain examples, various modifications, changes,omissions, and substitutions can be made without departing from thespirit of the present disclosure. It should be noted that theabove-mentioned examples illustrate rather than limit what is describedherein, and that those skilled in the art will be able to design manyalternative implementations without departing from the scope of theappended claims. In particular, a feature or block from one example maybe combined with or substituted by a feature/block of another example

The word “comprising” does not exclude the presence of elements otherthan those listed in a claim, “a” or “an” does not exclude a plurality,and a single processor or other unit may fulfil the functions of severalunits recited in the claims.

The features of any dependent claim may be combined with the features ofany of the independent claims or other dependent claims.

The invention claimed is:
 1. A method comprising: receiving datarepresenting a geometrical description of a three-dimensional objectdefining, in a geometric space, an object geometry of thethree-dimensional object; receiving at least one object propertydescription describing, in an object property space, an object propertyof the three-dimensional object; and intersecting the object propertyspace and the geometric space to define an object model of thethree-dimensional object, wherein the object model comprises at leastone object property of the three-dimensional object defined at anintersection between a described object property and a defined objectgeometry of the three-dimensional object.
 2. The method according toclaim 1, further comprising converting at least one object propertydescription into the geometric space of the geometrical description. 3.The method according to claim 1 wherein the data representing thegeometrical description comprises a plurality of geometric vertices,each of the plurality of geometric vertices being indicative of alocation in geometric space, and wherein the object model comprises theplurality of geometric vertices and at least one non-geometric vertexdefining the at least one object property at the intersection.
 4. Themethod according to claim 1, wherein the object model comprises thegeometric description and a plurality of object description vectors,wherein the object description vectors are based on described objectproperties at an intersection of the object property space and thegeometric space.
 5. The method according to claim 1, wherein the atleast one object property description comprises an indexed array ofunique object property value data objects and a set of locationsassociated with an index of the indexed array.
 6. The method accordingto claim 1, further comprising receiving an initial object propertydescription comprising object property value data objects associatedwith each of a plurality of locations within the object property space;identifying distinct object property value data objects from the objectproperty value data objects; populating an indexed array with thedistinct object property value data objects, wherein data indicative ofeach distinct object property value data object is stored at a differentindex within the array; and generating data comprising a new objectproperty description, the data comprising the new object propertydescription comprising an index associated with each of a plurality oflocations within the object property space, wherein the indexcorresponds to the index of the object property value data object for arespective location of the plurality of locations.
 7. The methodaccording to claim 1, further comprising receiving a plurality of objectproperty descriptions, each of the plurality of object propertydescriptions describing at least one object property of thethree-dimensional object.
 8. A method comprising: receiving an initialobject property description comprising object property value dataobjects associated with each of a plurality of locations within anobject property space; identifying distinct object property value dataobjects from the object property value data objects; populating anindexed array with the distinct object property value data objects,wherein data indicative of each distinct object property value dataobject is stored at a different index within the array; generating anobject property description comprising an index associated with each ofthe plurality of locations within the object property space, wherein theindex associated with each of the plurality of locations within theobject property space corresponds to the index of the object propertyvalue data object for that location; and intersecting the generatedobject property description with a geometric description of athree-dimensional object.
 9. The method according to claim 8, whereinthe geometric description is a description of the geometry of thethree-dimensional object in a geometric space, and the method comprisesconverting the locations within the object property space to locationswithin the geometric space.
 10. The method according to claim 8, whereinthe geometric description is a description of the three-dimensionalobject in a geometric space using a geometric coordinate system, andwherein the locations within the object property space are specified ascoordinates in an object space coordinate system, and wherein the methodfurther comprises converting the coordinates of the object spacecoordinate system into coordinates of the geometric coordinate system.11. A processing apparatus, comprising: an interface to receive objectmodel data, the object model data comprising a geometric description ofa three-dimensional object in a geometric space, and object propertydata describing at least one object property of the three-dimensionalobject across an object property space; a processor; and a memory onwhich are stored instructions that when executed by the processor are tocause the processor to: express the object property data in thegeometric space when the object property space is specified differentlyfrom the geometric space of the geometric description; and combine thegeometric description and the object property data by intersecting thegeometric description and the object property data and assigning objectproperties of the object property data to the geometric description ofthe three-dimensional object.
 12. The processing apparatus according toclaim 11, wherein the geometric description comprises an array of voxelsand the instructions are further to cause the processor to assign anobject property to a voxel of the array of voxels.
 13. The processingapparatus according to claim 11, wherein the instructions are further tocause the processor to map data indicative of an object property to aprint material coverage representation.
 14. The processing apparatusaccording to claim 13, wherein the instructions are further to cause theprocessor to generate control data from the print material coveragerepresentation.
 15. The processing apparatus according to claim 14,wherein the control data comprises a set of discrete print materialchoices.